/*
 * @功能描述: 
 * @版本: v1.0.0
 * @作者: LuAn
 * @Date: 2021-08-30 20:23:11
 * @LastEditTime: 2021-08-31 06:22:08
 */
#include "bsp_key.h"
#include "bsp_gpio.h"
#include "bsp_delay.h"

/*
 * @description	: 初始化按键
 * @param 		: 无
 * @return 		: 无
 */
void key_init(void)
{
  /* 1、初始化IO复用, 复用为GPIO1_IO18 */
  IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);

  /* 2、、配置UART1_CTS_B的IO属性	
	 *bit 16:0 HYS关闭
	 *bit [15:14]: 11 默认22K上拉
	 *bit [13]: 1 pull功能
	 *bit [12]: 1 pull/keeper使能
	 *bit [11]: 0 关闭开路输出
	 *bit [7:6]: 10 速度100Mhz
	 *bit [5:3]: 000 关闭输出
	 *bit [0]: 0 低转换率
	 */
  IOMUXC_PAD_t conf = {
      .PUS = IOMUXC_PAD_PUS_UP22,
      .PKE = IOMUXC_PAD_PKE_EN,
      .SPEED = IOMUXC_PAD_SPEED_MID};
  IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, conf.full /*0xF080*/);
  gpio_init_input(GPIO1, 18);
}

/*
 * @description	: 获取按键值 
 * @param 		: 无
 * @return 		: 0 没有按键按下，其他值:对应的按键值
 */
int key_getvalue(void)
{
  int ret = 0;

  if ((gpio_pinread(GPIO1, 18) == 0)) // 不是松开的
  {
    delay(10); /* 延时消抖 		*/
    if (gpio_pinread(GPIO1, 18) == 0)
    {
      ret = KEY0_VALUE;
    }
  }
  return ret;
}
